java如何将带有模块的项目导入到另一个项目中,而不丢失封装?
我正试图建立一个小天气客户端API,将从一些网站获取一些天气。在这样做时,我希望我的项目有一个单一的入口点(称之为WeatherClient)
我将项目分为不同的包(为了简单起见,让我们假设我有两个包,一个“外部”包和一个“内部”包)
我只希望WeatherClient在外部包中,在内部包中有一个公共类(WeatherClientBuilderImpl
和public builder()
)
我试图实现的是在导入项目时隐藏WeatherClientBuilderImpl。从我对模块的了解来看,这似乎正是它们的主要优点之一,但遗憾的是,我找不到任何关于如何实现这一点的信息
我试过几种方法:
我尝试创建了两个模块:内部模块和外部模块。我试着只导入内部文件。jar(其pom包括对模块的依赖关系)——我在这里面临的主要问题是在运行时获得ClassNotFound异常
我尝试创建一个模块,只导出外部包。这不起作用(我猜是因为“导出”导出的是模块,而不是包)。在这里,我最终能够实现任何一个类,这违背了我的目的
这是我当前的树,或多或少是我想要的(我试着用模块做一些事情,把我的WeatherClient放在一个“外部”包中,然后创建两个模块(一个用于外部,一个用于内部)
.
|-- WeatherClient.java
|-- internal
| |-- DarkKey.java
| |-- DarkSkyClient.java
| |-- InvalidParametersException.java
| |-- WeatherBuilderImpl.java
| `-- handlers
| |-- JsonBodyHandler.java
| `-- JsonBodyHandlerTwo.java
`-- model
|-- DateTimeFormatException.java
|-- DateValidator.java
`-- WeatherRequest.java
明确地说,我试图实现的是将这个项目导入到一个单独的项目中,这样一来,客户机只能通过使用WeatherClient类来创建
共 (0) 个答案